textview: Use the adjustment target value to figure out if keynav failed
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 8 Jul 2014 13:17:23 +0000 (15:17 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 9 Jul 2014 01:14:41 +0000 (21:14 -0400)
When moving the cursor, compare current adjustment value with the post-animation
target value, in order to avoid false "keynav failed" positives as the animation
hasn't started yet, so dx/dy are still 0 at that time.

gtk/gtktextview.c

index b42d95a970f3a8b54c67316b2ccaf6ac4ad02028..581a378834041aae62ef39aa744e852c98f56604 100644 (file)
@@ -5858,10 +5858,11 @@ gtk_text_view_move_cursor (GtkTextView     *text_view,
           break;
        }
 
-      old_xpos = priv->xoffset;
-      old_ypos = priv->yoffset;
+      old_xpos = gtk_adjustment_get_value (priv->hadjustment);
+      old_ypos = gtk_adjustment_get_value (priv->vadjustment);
       gtk_text_view_move_viewport (text_view, scroll_step, count);
-      if ((old_xpos == priv->xoffset && old_ypos == priv->yoffset) &&
+      if ((old_xpos == gtk_adjustment_get_target_value (priv->hadjustment) &&
+           old_ypos == gtk_adjustment_get_target_value (priv->vadjustment)) &&
           leave_direction != -1 &&
           !gtk_widget_keynav_failed (GTK_WIDGET (text_view),
                                      leave_direction))